package edu.yzu.testspringboot002.convert;


import edu.yzu.testspringboot002.po.DictData;
import edu.yzu.testspringboot002.po.DictType;
import edu.yzu.testspringboot002.po.dto.SysDictDataDTO;
import edu.yzu.testspringboot002.po.dto.SysDictTypeDTO;
import org.mapstruct.Mapper;
import org.mapstruct.NullValuePropertyMappingStrategy;

import java.util.List;

/**
 * dict数据转换映射器
 *
 * @author yulang
 * @date 2023-08-18
 */

@Mapper(
        componentModel = "spring",
        nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE
)
public interface DictDataConvertMapper {


    /**
     * dto sys dict类型数据
     *
     * @param dictData dict类型数据
     * @return {@link SysDictDataDTO}
     */
    SysDictDataDTO toSysDictDataDTO(DictData dictData);

    /**
     * dtolist sys dict类型数据
     *
     * @param dictDataList 列表
     * @return {@link List}<{@link SysDictDataDTO}>
     */
    List<SysDictDataDTO> toSysDictDataDTOList(List<DictData> dictDataList);

    /**
     * 对dict阿宝
     *
     * @param sysDictDataDTO sys dict dto数据
     * @return {@link DictData}
     */
    DictData toDictPO(SysDictDataDTO sysDictDataDTO);

    /**
     * 对dict类型dtolist
     *
     * @param dictTypeList dict类型列表
     * @return {@link List}<{@link SysDictTypeDTO}>
     */

    List<SysDictTypeDTO> toDictTypeDTOList(List<DictType> dictTypeList);

    SysDictTypeDTO toDictTypeDTO(DictType dictType);

    DictType toDictTypePO(SysDictTypeDTO sysDictTypeDTO);
}

